package com.molichuxing.services.infrastructure.dao;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.services.infrastructure.bean.GoodsBean;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 商品表 Mapper 接口
 * </p>
 *
 * @author xuelin yi
 * @since 2019-08-12
 */
public interface GoodsMapper extends RootMapper<GoodsBean> {

    /**
     * 根据条件分页查询count
     * @param type
     * @param vehicleStyleId
     * @param code
     * @param goodsIds
     * @return
     */
    public int getGoodsPageCount(@Param("type") int type, @Param("vehicleStyleId") Integer vehicleStyleId, @Param("code") String code, @Param("goodsIds") List<Integer> goodsIds);

    /**
     * 根据条件分页查询结果
     * @param type
     * @param vehicleStyleId
     * @param code
     * @param goodsIds
     * @param pageNum
     * @param pageSize
     * @return
     */
    public List<GoodsBean> getGoodsPage(@Param("type") int type, @Param("vehicleStyleId") Integer vehicleStyleId, @Param("code") String code, @Param("goodsIds") List<Integer> goodsIds,
                                               @Param("pageNum")int pageNum, @Param("pageSize") int pageSize);


    /**
     * 根据条件分页查询结果
     * @param type
     * @param vehicleStyleId
     * @param code
     * @param goodsIds
     * @return
     */
    public List<GoodsBean> getGoodsList(@Param("type") int type, @Param("vehicleStyleId") Integer vehicleStyleId, @Param("code") String code, @Param("goodsIds") List<Integer> goodsIds);
    /**
     * 根据条件查询结果
     * @param type
     * @param vehicleStyleId
     * @param code
     * @param rental
     * @return
     */
    public List<GoodsBean> getDealerGoodsList(@Param("type") Integer type, @Param("vehicleStyleId") Integer vehicleStyleId, @Param("code") String code, @Param("rental") BigDecimal rental, @Param("bond") BigDecimal bond, @Param("goodsIds") List<Integer> goodsIds);

    /**
     * 新增商品基本信息列表
     * @param goodsBean
     * @return
     */
    @Override
    public int create(GoodsBean goodsBean);

    /**
     * 获取商品基本信息列表
     * @param goodsId
     * @return
     */
    @Override
    public GoodsBean getById(@Param("goodsId") Integer goodsId);

    /**
     * 获取商品基本信息列表
     * @param goodsIds
     * @return
     */
    public List<GoodsBean> getByIds(@Param("goodsIds") List<Integer> goodsIds, @Param("vehicleIds") List<Integer> vehicleIds);

    /**
     * 设置商品禁售状态
     * @param goodsId
     * @param isForbidSale
     * @return
     */
    public int settingGoodsSale(@Param("goodsId") int goodsId, @Param("isForbidSale") byte isForbidSale);

    /**
     * 查询有效的商品数量
     * @param goodsType
     * @return
     */
    Integer getNoDeleteGoodsCount(@Param("goodsType") Integer goodsType);
}
